package com.ruoyi.hr.service;


import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.hr.domain.Authority;
import com.ruoyi.hr.domain.Departments;
import com.ruoyi.system.domain.SysUser;

import java.util.List;
import java.util.Map;

public interface AuthorityService {
    /**
     * 获取所有权限列表
     *
     * @return
     */
    List<Authority> getAuthority();

    /**
     * 获取一个用户的权限
     *
     * @param userID
     * @return
     */
    List<Authority> getAuthorityUser(String userID);

    List<SysUser> getUserList();

    List<String> getDepAuthority(List<Authority> authorities);

    /**
     * 根据权限表id获取一条权限
     *
     * @param id
     * @return
     */
    public Authority getAuthorityId(String id);


    /**
     * 获取公司名,用于获取所有权限时取到这个权限的公司
     *
     * @param compId
     * @return
     */
    String getCompName(Integer compId);

    /**
     * 获取公司名,用逗号隔开,用于获取所有权限时取到所有部门
     *
     * @param authority
     * @return
     */
    String getDepName(Authority authority);

    /**
     * 用于增加时如果选择所有部门，则取出所有部门的id用逗号串联
     *
     * @param authority
     * @return
     */
    String getDepId(Authority authority);

    /**
     * 用于编辑权限时获取一条权限的所有权限集合
     *
     * @param depIds
     * @return
     */
    List<Departments> getDepList(String depIds);

    /**
     * 新增权限
     *
     * @param authority
     */
    int insertAuthority(Authority authority);

    /**
     * 删除权限
     *
     * @param ids
     * @return
     */
    int deleteAuthority(String ids);

    /**
     *
     * 修改权限
     * @param authority
     * @return
     */
    int updateAuthority(Authority authority);

    /**
     * 管理下级取所有下级公司ID
     */
    String getSubordinateCompId(int compId);

    /**
     * 设置管理员
     */
    int setUpAdmin(Authority authority);

    /**
     * 设置管理员时判断此用户有没有其它权限
     */
    int findAuthorityCount(String userId);

    /**
     * 获取用户权限集合及是否是管理员
     */
    Authority findAuthorAndIsAdmin();
}
